﻿using System;
namespace Producers.Kis.Xtee.Riik.Ee.Producer.Kis {
    
    
    public partial class Address : global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.IAddress {
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.AddressType @__addressType;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.CountryChoice @__choice;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__country;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__county;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__ruralMunicipalityCity;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__settlement;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__street;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__house;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__apartment;
        
        private global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @__postalCode;
        
        private bool @__correspondence;
        
        private string @__otherFormat;
        
        private string @__landRegistryCode;
        
        private string @__companyName;
        
        public Address() {
        }
        
        /// <summary>
        /// All parameters
        /// </summary>
        public Address(global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.AddressType @addressType, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.CountryChoice @choice, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @country, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @county, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @ruralMunicipalityCity, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @settlement, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @street, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @house, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @apartment, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString @postalCode, bool @correspondence, string @otherFormat, string @landRegistryCode, string @companyName) {
            this.@__addressType = @addressType;
            this.@__choice = @choice;
            this.@__country = @country;
            this.@__county = @county;
            this.@__ruralMunicipalityCity = @ruralMunicipalityCity;
            this.@__settlement = @settlement;
            this.@__street = @street;
            this.@__house = @house;
            this.@__apartment = @apartment;
            this.@__postalCode = @postalCode;
            this.@__correspondence = @correspondence;
            this.@__otherFormat = @otherFormat;
            this.@__landRegistryCode = @landRegistryCode;
            this.@__companyName = @companyName;
        }
        
        /// <summary>
        /// Required parameters
        /// </summary>
        public Address(global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.AddressType @addressType, global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.CountryChoice @choice, bool @correspondence) {
            this.@__addressType = @addressType;
            this.@__choice = @choice;
            this.@__correspondence = @correspondence;
        }
        
        /// <summary>
        /// Copy Constructor
        /// </summary>
        protected Address(IAddress @address) {
            this.@__addressType = @address.AddressType;
            this.@__choice = @address.Choice;
            this.@__country = @address.Country;
            this.@__county = @address.County;
            this.@__ruralMunicipalityCity = @address.RuralMunicipalityCity;
            this.@__settlement = @address.Settlement;
            this.@__street = @address.Street;
            this.@__house = @address.House;
            this.@__apartment = @address.Apartment;
            this.@__postalCode = @address.PostalCode;
            this.@__correspondence = @address.Correspondence;
            this.@__otherFormat = @address.OtherFormat;
            this.@__landRegistryCode = @address.LandRegistryCode;
            this.@__companyName = @address.CompanyName;
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.AddressType AddressType {
            get {
                return this.@__addressType;
            }
            set {
                this.@__addressType = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.CountryChoice Choice {
            get {
                return this.@__choice;
            }
            set {
                this.@__choice = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString Country {
            get {
                return this.@__country;
            }
            set {
                this.@__country = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString County {
            get {
                return this.@__county;
            }
            set {
                this.@__county = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString RuralMunicipalityCity {
            get {
                return this.@__ruralMunicipalityCity;
            }
            set {
                this.@__ruralMunicipalityCity = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString Settlement {
            get {
                return this.@__settlement;
            }
            set {
                this.@__settlement = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString Street {
            get {
                return this.@__street;
            }
            set {
                this.@__street = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString House {
            get {
                return this.@__house;
            }
            set {
                this.@__house = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString Apartment {
            get {
                return this.@__apartment;
            }
            set {
                this.@__apartment = value;
            }
        }
        
        public virtual global::Producers.Kis.Xtee.Riik.Ee.Producer.Kis.NonEmptyString PostalCode {
            get {
                return this.@__postalCode;
            }
            set {
                this.@__postalCode = value;
            }
        }
        
        public virtual bool Correspondence {
            get {
                return this.@__correspondence;
            }
            set {
                this.@__correspondence = value;
            }
        }
        
        public virtual string OtherFormat {
            get {
                return this.@__otherFormat;
            }
            set {
                this.@__otherFormat = value;
            }
        }
        
        public virtual string LandRegistryCode {
            get {
                return this.@__landRegistryCode;
            }
            set {
                this.@__landRegistryCode = value;
            }
        }
        
        public virtual string CompanyName {
            get {
                return this.@__companyName;
            }
            set {
                this.@__companyName = value;
            }
        }
    }
}
